import http from '../../../utils/https.js';

const app = getApp();

Page({
  data: {
    noticeDetail: null, // 公告详情数据
    loading: true // 加载状态
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    const id = options.id; // 获取公告ID
    if (id) {
      this.getNoticeDetail(id);
    } else {
      wx.showToast({
        title: '公告ID缺失',
        icon: 'error'
      });
      wx.navigateBack();
    }
  },

  /**
   * 获取公告详情
   */
  getNoticeDetail: function(id) {
    wx.showLoading({ title: '加载中...' });
    
    // 获取公告详情
    http.get(`property/notice/${id}`)
      .then(res => {
        if (res.code === 200 && res.data) {
          const detail = res.data;
          
          // 格式化日期
          const date = new Date(detail.publishTime);
          const formattedDate = `${date.getFullYear()}-${(date.getMonth()+1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`;
          
          // 紧急程度映射
          let tag = '';
          switch (detail.noticeLevel) {
            case 1: tag = '一般'; break;
            case 2: tag = '紧急'; break;
            case 3: tag = '非常紧急'; break;
            default: tag = '通知';
          }
          
          // 设置数据
          this.setData({
            noticeDetail: {
              id: detail.id,
              title: detail.noticeTitle,
              content: detail.noticeDetail,
              date: formattedDate,
              tag: tag,
              source: detail.organizer,
              readCount: detail.readCount,
              unreadCount: detail.unreadCount
            },
            loading: false
          });
          
          // 增加阅读计数
          this.increaseReadCount(id);
        } else {
          throw new Error(res.msg || '获取公告详情失败');
        }
        wx.hideLoading();
      })
      .catch(err => {
        console.error('获取公告详情失败:', err);
        wx.hideLoading();
        wx.showToast({
          title: '加载失败，请重试',
          icon: 'none'
        });
        wx.navigateBack();
      });
  },

  /**
   * 增加阅读计数
   */
  increaseReadCount: function(id) {
    const userId = app.globalData.userId;
    if (!userId) {
      console.log('用户未登录，不增加阅读计数');
      return;
    }
    
    // 检查该用户是否已阅读过此公告
    const readKey = `notice_${id}_read_by_${userId}`;
    if (wx.getStorageSync(readKey)) {
      console.log('用户已阅读过此公告，不重复计数');
      return;
    }
    
    // 标记为已读
    wx.setStorageSync(readKey, true);
    
    // 发送增加阅读计数的请求
    http.put(`property/notice/increaseReadCount/${id}`)
      .then(res => {
        if (res.code === 200) {
          console.log('阅读计数增加成功');
        } else {
          console.error('阅读计数增加失败:', res.msg);
        }
      })
      .catch(err => {
        console.error('阅读计数请求失败:', err);
      });
  }
});